<!DOCTYPE html>












  


<html class="theme-next mist use-motion" lang="zh-CN">
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">


  <script>
  (function(i,s,o,g,r,a,m){i["DaoVoiceObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;a.charset="utf-8";m.parentNode.insertBefore(a,m)})(window,document,"script",('https:' == document.location.protocol ? 'https:' : 'http:') + "//widget.daovoice.io/widget/0f81ff2f.js","daovoice")
  daovoice('init', {
      app_id: "15fc8e87"
    });
  daovoice('update');
  </script>






  
  
    
    
  <script src="/lib/pace/pace.min.js?v=1.0.2"></script>
  <link href="/lib/pace/pace-theme-minimal.min.css?v=1.0.2" rel="stylesheet">







<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">






















<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css">

<link href="/css/main.css?v=6.3.0" rel="stylesheet" type="text/css">


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=6.3.0">


  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png?v=6.3.0">


  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png?v=6.3.0">


  <link rel="mask-icon" href="/images/logo.svg?v=6.3.0" color="#222">









<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Mist',
    version: '6.3.0',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":true,"scrollpercent":true,"onmobile":false},
    fancybox: false,
    fastclick: false,
    lazyload: false,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>


  




  <meta name="description" content="程序写的比较粗糙，主要就是处理领英页面信息的逻辑，提供一种思路，用得到的可以自行优化">
<meta name="keywords" content="Linkedin,Crawl">
<meta property="og:type" content="article">
<meta property="og:title" content="采集领英个人信息">
<meta property="og:url" content="http://blog.wangxc.club/2017/04/24/采集领英个人信息/index.html">
<meta property="og:site_name" content="冬与晨">
<meta property="og:description" content="程序写的比较粗糙，主要就是处理领英页面信息的逻辑，提供一种思路，用得到的可以自行优化">
<meta property="og:locale" content="zh-CN">
<meta property="og:updated_time" content="2018-06-29T13:58:50.299Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="采集领英个人信息">
<meta name="twitter:description" content="程序写的比较粗糙，主要就是处理领英页面信息的逻辑，提供一种思路，用得到的可以自行优化">






  <link rel="canonical" href="http://blog.wangxc.club/2017/04/24/采集领英个人信息/">



<script type="text/javascript" id="page.configurations">
  CONFIG.page = {
    sidebar: "",
  };
</script>

  <title>采集领英个人信息 | 冬与晨</title>
  




<script async src="https://www.googletagmanager.com/gtag/js?id=UA-102769182-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-102769182-1');
</script>



  <script type="text/javascript">
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "https://hm.baidu.com/hm.js?809d5610fca8eaff344d9a698536110d";
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(hm, s);
    })();
  </script>




  <noscript>
  <style type="text/css">
    .use-motion .motion-element,
    .use-motion .brand,
    .use-motion .menu-item,
    .sidebar-inner,
    .use-motion .post-block,
    .use-motion .pagination,
    .use-motion .comments,
    .use-motion .post-header,
    .use-motion .post-body,
    .use-motion .collection-title { opacity: initial; }

    .use-motion .logo,
    .use-motion .site-title,
    .use-motion .site-subtitle {
      opacity: initial;
      top: initial;
    }

    .use-motion {
      .logo-line-before i { left: initial; }
      .logo-line-after i { right: initial; }
    }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-CN">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband">
    </div>
<a href="https://github.com/vector4wang"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">冬与晨</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
    
  </div>

  <div class="site-nav-toggle">
    <button aria-label="切换导航栏">
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>



<nav class="site-nav">
  
    <ul id="menu" class="menu">
      
        
        
        
          
          <li class="menu-item menu-item-home">
    <a href="/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-home"></i> <br>首页</a>
  </li>
        
        
        
          
          <li class="menu-item menu-item-about">
    <a href="/about/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-user"></i> <br>关于</a>
  </li>
        
        
        
          
          <li class="menu-item menu-item-tags">
    <a href="/tags/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-tags"></i> <br>标签</a>
  </li>
        
        
        
          
          <li class="menu-item menu-item-categories">
    <a href="/categories/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-th"></i> <br>分类</a>
  </li>
        
        
        
          
          <li class="menu-item menu-item-archives">
    <a href="/archives/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-archive"></i> <br>归档</a>
  </li>
        
        
        
          
          <li class="menu-item menu-item-commonweal">
    <a href="/404/" rel="section">
      <i class="menu-item-icon fa fa-fw fa-heartbeat"></i> <br>公益 404</a>
  </li>

      
      
    </ul>
  

  
    

  

  
</nav>



  



</div>
    </header>

    


    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://blog.wangxc.club/2017/04/24/采集领英个人信息/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="wangxc">
      <meta itemprop="description" content="革命尚未成功，同志还需努力~">
      <meta itemprop="image" content="/images/avatar.jpg">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="冬与晨">
    </span>

    
      <header class="post-header">

        
        
          <h2 class="post-title" itemprop="name headline">采集领英个人信息
              
            
          </h2>
        

        <div class="post-meta">
          <span class="post-time">

            
            
            

            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              

              
                
              

              <time title="创建时间：2017-04-24 22:31:17" itemprop="dateCreated datePublished" datetime="2017-04-24T22:31:17+08:00">2017-04-24</time>
            

            
              

              
                
                <span class="post-meta-divider">|</span>
                

                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                
                  <span class="post-meta-item-text">更新于</span>
                
                <time title="修改时间：2018-06-29 21:58:50" itemprop="dateModified" datetime="2018-06-29T21:58:50+08:00">2018-06-29</time>
              
            
          </span>

          
            <span class="post-category">
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/技术/" itemprop="url" rel="index"><span itemprop="name">技术</span></a></span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
                <span class="post-meta-divider">|</span>
                <span class="post-meta-item-icon">
                  <i class="fa fa-comment-o"></i>
                </span>
                <a href="/2017/04/24/采集领英个人信息/#comments" itemprop="discussionUrl">
                  <span class="post-meta-item-text">评论数：</span> <span class="post-comments-count valine-comment-count" data-xid="/2017/04/24/采集领英个人信息/" itemprop="commentCount"></span>
                </a>
              </span>
            
          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <p>　
<strong>程序写的比较粗糙，主要就是处理领英页面信息的逻辑，提供一种思路，用得到的可以自行优化</strong></p>
<a id="more"></a>

<blockquote>
<p>LinkedIn是全球最大的职业社交网站，是一家面向商业客户的社交网络（SNS）</p>
</blockquote>
<p>最近写了一个采集个人信息的程序，用的java语言，springboot框架，因为领英做了一些防爬虫处理，所以返回来的数据需要做些处理，主要逻辑代码如下</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> linkedin.service;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.WebClient;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.WebRequest;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.WebResponse;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.html.HtmlElement;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.html.HtmlPage;</span><br><span class="line"><span class="keyword">import</span> com.gargoylesoftware.htmlunit.util.Cookie;</span><br><span class="line"><span class="keyword">import</span> linkedin.model.LinkedInModel;</span><br><span class="line"><span class="keyword">import</span> net.sf.json.JSONArray;</span><br><span class="line"><span class="keyword">import</span> net.sf.json.JSONObject;</span><br><span class="line"><span class="keyword">import</span> org.apache.http.HttpStatus;</span><br><span class="line"><span class="keyword">import</span> org.apache.log4j.Logger;</span><br><span class="line"><span class="keyword">import</span> org.jsoup.Jsoup;</span><br><span class="line"><span class="keyword">import</span> org.jsoup.nodes.Document;</span><br><span class="line"><span class="keyword">import</span> org.jsoup.nodes.Element;</span><br><span class="line"><span class="keyword">import</span> org.jsoup.select.Elements;</span><br><span class="line"><span class="keyword">import</span> org.springframework.stereotype.Component;</span><br><span class="line"><span class="keyword">import</span> org.springframework.util.StringUtils;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.net.URL;</span><br><span class="line"><span class="keyword">import</span> java.util.ArrayList;</span><br><span class="line"><span class="keyword">import</span> java.util.List;</span><br><span class="line"><span class="keyword">import</span> java.util.Set;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Created by vector on 2017/3/13.</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta">@Component</span></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">CrawlLinkedService</span> </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">private</span> Logger logger = Logger.getLogger(CrawlLinkedService.class);</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">crawlLinkedIn</span><span class="params">(String name, String password, String pointUrl)</span> </span>&#123;</span><br><span class="line">        String url = <span class="string">"https://www.linkedin.com/uas/login"</span>;</span><br><span class="line">        String perUrl = <span class="string">"http://www.linkedin.com/in"</span>;</span><br><span class="line"></span><br><span class="line">        List&lt;String&gt; publicIdentifiers = <span class="keyword">new</span> ArrayList&lt;&gt;();</span><br><span class="line">        <span class="keyword">try</span> &#123;</span><br><span class="line"></span><br><span class="line">            WebClient webClient = <span class="keyword">new</span> WebClient();<span class="comment">// 创建WebClient</span></span><br><span class="line"></span><br><span class="line">            webClient.getOptions().setJavaScriptEnabled(<span class="keyword">false</span>);</span><br><span class="line">            webClient.getOptions().setCssEnabled(<span class="keyword">false</span>);</span><br><span class="line"><span class="comment">//            webClient.getOptions().setTimeout(5000);</span></span><br><span class="line"></span><br><span class="line">            webClient.addRequestHeader(<span class="string">"User-Agent"</span>, <span class="string">"Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2"</span>);</span><br><span class="line">            <span class="comment">// 获取页面</span></span><br><span class="line">            HtmlPage page = webClient.getPage(url); <span class="comment">// 打开linkedin</span></span><br><span class="line">            <span class="comment">// 获得name为"session_key"的html元素</span></span><br><span class="line">            HtmlElement usernameEle = page.getElementByName(<span class="string">"session_key"</span>);</span><br><span class="line">            <span class="comment">// 获得id为"session_password"的html元素</span></span><br><span class="line">            HtmlElement passwordEle = (HtmlElement) page.getElementById(<span class="string">"session_password-login"</span>);</span><br><span class="line">            usernameEle.focus(); <span class="comment">// 设置输入焦点</span></span><br><span class="line">            usernameEle.type(name);</span><br><span class="line">            passwordEle.focus(); <span class="comment">// 设置输入焦点</span></span><br><span class="line"></span><br><span class="line">            passwordEle.type(password);</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 获得name为"submit"的元素</span></span><br><span class="line"></span><br><span class="line">            HtmlElement submitEle = page.getElementByName(<span class="string">"signin"</span>);</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 点击“登陆”</span></span><br><span class="line">            page = submitEle.click();</span><br><span class="line">            WebResponse webResponse = page.getWebResponse();</span><br><span class="line">            <span class="keyword">int</span> statusCode = webResponse.getStatusCode();</span><br><span class="line"></span><br><span class="line">            <span class="keyword">if</span> (HttpStatus.SC_OK == statusCode) &#123;</span><br><span class="line">                System.out.println(<span class="string">"登录成功"</span>);</span><br><span class="line">                Document doc = Jsoup.parse(page.asXml());</span><br><span class="line">                Elements elements = doc.select(<span class="string">"code"</span>);</span><br><span class="line">                <span class="comment">// 获取登录人的个人中心链接地址</span></span><br><span class="line"></span><br><span class="line">                <span class="keyword">for</span> (Element item : elements) &#123;</span><br><span class="line">                    String codeContent = item.text();</span><br><span class="line">                    <span class="keyword">if</span> (codeContent.startsWith(<span class="string">"&#123;"</span>)) &#123;</span><br><span class="line">                        JSONObject json = JSONObject.fromObject(codeContent);</span><br><span class="line">                        <span class="keyword">if</span> (json.containsKey(<span class="string">"included"</span>)) &#123;</span><br><span class="line">                            JSONArray jsonArray = JSONArray.fromObject(json.get(<span class="string">"included"</span>));</span><br><span class="line">                            <span class="keyword">if</span> (jsonArray.size() &gt; <span class="number">0</span>) &#123;</span><br><span class="line">                                <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; jsonArray.size(); i++) &#123;</span><br><span class="line">                                    JSONObject jsonObject = JSONObject.fromObject(jsonArray.get(i));</span><br><span class="line">                                    <span class="keyword">if</span> (jsonObject.containsKey(<span class="string">"publicIdentifier"</span>)) &#123;</span><br><span class="line">                                        String publicIdentifier = jsonObject.get(<span class="string">"publicIdentifier"</span>).toString();</span><br><span class="line">                                        <span class="keyword">if</span> (!publicIdentifiers.contains(publicIdentifier)) &#123;</span><br><span class="line">                                            publicIdentifiers.add(publicIdentifier);</span><br><span class="line">                                        &#125;</span><br><span class="line"></span><br><span class="line">                                    &#125;</span><br><span class="line">                                &#125;</span><br><span class="line">                            &#125;</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">                <span class="keyword">if</span> (!StringUtils.isEmpty(pointUrl)) &#123;</span><br><span class="line">                    publicIdentifiers.add(<span class="number">1</span>, pointUrl);</span><br><span class="line">                &#125;</span><br><span class="line">                System.out.println(publicIdentifiers);</span><br><span class="line"><span class="comment">//                int flag = 0;</span></span><br><span class="line">                <span class="keyword">while</span> (!publicIdentifiers.isEmpty()) &#123;</span><br><span class="line"><span class="comment">//                    if (flag == 1) &#123;</span></span><br><span class="line"><span class="comment">//                        break;</span></span><br><span class="line"><span class="comment">//                    &#125;</span></span><br><span class="line"><span class="comment">//                    flag++;</span></span><br><span class="line">                    String temp = publicIdentifiers.get(<span class="number">1</span>);</span><br><span class="line">                    String uniqueUrl = perUrl + <span class="string">"/"</span> + temp;<span class="comment">//"/qiuxuan-zhang-041ba48b";</span></span><br><span class="line">                    WebClient wc = <span class="keyword">new</span> WebClient();</span><br><span class="line">                    URL link = <span class="keyword">new</span> URL(uniqueUrl);</span><br><span class="line">                    logger.debug(link.toString());</span><br><span class="line">                    WebRequest request = <span class="keyword">new</span> WebRequest(link);</span><br><span class="line">                    <span class="comment">////设置请求报文头里的User-Agent字段</span></span><br><span class="line">                    request.setAdditionalHeader(<span class="string">"User-Agent"</span>, <span class="string">"Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2"</span>);</span><br><span class="line">                    <span class="comment">//wc.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");</span></span><br><span class="line">                    <span class="comment">//wc.addRequestHeader和request.setAdditionalHeader功能应该是一样的。选择一个即可。</span></span><br><span class="line">                    <span class="comment">//其他报文头字段可以根据需要添加</span></span><br><span class="line">                    wc.getCookieManager().setCookiesEnabled(<span class="keyword">true</span>);<span class="comment">//开启cookie管理</span></span><br><span class="line">                    wc.getOptions().setJavaScriptEnabled(<span class="keyword">false</span>);<span class="comment">//开启js解析。对于变态网页，这个是必须的</span></span><br><span class="line">                    wc.getOptions().setCssEnabled(<span class="keyword">false</span>);<span class="comment">//开启css解析。对于变态网页，这个是必须的。</span></span><br><span class="line">                    wc.getOptions().setThrowExceptionOnFailingStatusCode(<span class="keyword">false</span>);</span><br><span class="line">                    wc.getOptions().setThrowExceptionOnScriptError(<span class="keyword">false</span>);</span><br><span class="line">                    wc.getOptions().setTimeout(<span class="number">10000</span>);</span><br><span class="line">                    <span class="comment">//设置cookie。如果你有cookie，可以在这里设置</span></span><br><span class="line">                    Set&lt;Cookie&gt; cookies = webClient.getCookieManager().getCookies();</span><br><span class="line">                    wc.getCookieManager().setCookiesEnabled(<span class="keyword">true</span>);</span><br><span class="line">                    <span class="keyword">for</span> (Cookie item : cookies) &#123;</span><br><span class="line">                        wc.getCookieManager().addCookie(item);</span><br><span class="line">                    &#125;</span><br><span class="line">                    HtmlPage uniquePage = <span class="keyword">null</span>;</span><br><span class="line">                    <span class="keyword">try</span> &#123;</span><br><span class="line">                        uniquePage = wc.getPage(request);</span><br><span class="line">                    &#125; <span class="keyword">catch</span> (Exception e) &#123;</span><br><span class="line">                        logger.error(e.getMessage());</span><br><span class="line">                        <span class="keyword">continue</span>;</span><br><span class="line">                    &#125;</span><br><span class="line">                    WebResponse identResponse = uniquePage.getWebResponse();</span><br><span class="line">                    <span class="keyword">if</span> (uniquePage == <span class="keyword">null</span>) &#123;</span><br><span class="line">                        System.out.println(<span class="string">"采集 "</span> + url + <span class="string">" 失败!!!"</span>);</span><br><span class="line">                        <span class="keyword">return</span>;</span><br><span class="line">                    &#125;</span><br><span class="line">                    String content = identResponse.getContentAsString();<span class="comment">//网页内容保存在content里</span></span><br><span class="line">                    <span class="keyword">if</span> (content == <span class="keyword">null</span>) &#123;</span><br><span class="line">                        System.out.println(<span class="string">"采集 "</span> + url + <span class="string">" 失败!!!"</span>);</span><br><span class="line">                        <span class="keyword">return</span>;</span><br><span class="line">                    &#125;</span><br><span class="line">                    logger.debug(content);</span><br><span class="line">                    Document parse = Jsoup.parse(content);</span><br><span class="line">                    Elements uniqueElements = parse.select(<span class="string">"code"</span>);</span><br><span class="line">                    JSONArray experience = <span class="keyword">new</span> JSONArray();</span><br><span class="line">                    JSONArray educations = <span class="keyword">new</span> JSONArray();</span><br><span class="line">                    JSONArray schools = <span class="keyword">new</span> JSONArray();</span><br><span class="line">                    JSONArray skills = <span class="keyword">new</span> JSONArray();</span><br><span class="line">                    JSONObject selfInfo = <span class="keyword">new</span> JSONObject();</span><br><span class="line"></span><br><span class="line">                    JSONObject commonDate = <span class="keyword">new</span> JSONObject();</span><br><span class="line">                    JSONObject rangeDate = <span class="keyword">new</span> JSONObject();</span><br><span class="line"></span><br><span class="line">                    <span class="keyword">for</span> (Element uniqueItem : uniqueElements) &#123;</span><br><span class="line">                        String itemTxt = uniqueItem.text();</span><br><span class="line">                        <span class="keyword">if</span> (itemTxt.startsWith(<span class="string">"&#123;"</span>)) &#123;</span><br><span class="line">                            logger.debug(itemTxt);</span><br><span class="line">                            JSONObject json = JSONObject.fromObject(itemTxt);</span><br><span class="line">                            <span class="keyword">if</span> (!json.containsKey(<span class="string">"request"</span>)) &#123;</span><br><span class="line">                                logger.info(json);</span><br><span class="line">                                JSONArray jsonArray = JSONArray.fromObject(json.get(<span class="string">"included"</span>));</span><br><span class="line">                                <span class="keyword">if</span> (jsonArray.size() &gt; <span class="number">0</span>) &#123;</span><br><span class="line">                                    <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; jsonArray.size(); i++) &#123;</span><br><span class="line">                                        <span class="keyword">try</span> &#123;</span><br><span class="line">                                            JSONObject jobject = JSONObject.fromObject(jsonArray.get(i));</span><br><span class="line">                                            <span class="keyword">if</span> (jobject.containsKey(<span class="string">"$type"</span>)) &#123;</span><br><span class="line">                                                String typeStr = jobject.getString(<span class="string">"$type"</span>);</span><br><span class="line">                                                <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.common.Date"</span>)) &#123;</span><br><span class="line">                                                    commonDate.accumulate(jobject.getString(<span class="string">"$id"</span>), jobject);</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.common.DateRange"</span>)) &#123;</span><br><span class="line">                                                    rangeDate.accumulate(jobject.getString(<span class="string">"$id"</span>), jobject);</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.identity.shared.MiniProfile"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 他人信息摘要（包括自己）</span></span><br><span class="line">                                                    String publicIdentifier = jobject.getString(<span class="string">"publicIdentifier"</span>);</span><br><span class="line">                                                    <span class="keyword">if</span> (!publicIdentifiers.contains(publicIdentifier)) &#123;</span><br><span class="line">                                                        publicIdentifiers.add(publicIdentifier);</span><br><span class="line">                                                    &#125;</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.identity.profile.Skill"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 个人技能</span></span><br><span class="line">                                                    skills.add(jobject.getString(<span class="string">"name"</span>));</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.identity.profile.Profile"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 个人信息</span></span><br><span class="line">                                                    jobject.remove(<span class="string">"supportedLocales"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"versionTag"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"pictureInfo"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"industryUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"$type"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"defaultLocale"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"$deletedFields"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"entityUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"location"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"miniProfile"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"backgroundImage"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"state"</span>);</span><br><span class="line">                                                    selfInfo = jobject;</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.entities.shared.MiniSchool"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 学校</span></span><br><span class="line">                                                    jobject.remove(<span class="string">"$deletedFields"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"objectUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"entityUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"trackingId"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"$type"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"logo"</span>);</span><br><span class="line">                                                    schools.add(jobject);</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.identity.profile.Education"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 教育</span></span><br><span class="line">                                                    jobject.remove(<span class="string">"$deletedFields"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"entityUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"schoolUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"$type"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"courses"</span>);</span><br><span class="line">                                                    String dateStr = buildRangeDate(commonDate,rangeDate,jobject);</span><br><span class="line">                                                    jobject.accumulate(<span class="string">"rangeDate"</span>, dateStr);</span><br><span class="line">                                                    jobject.remove(<span class="string">"degreeUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"timePeriod"</span>);</span><br><span class="line">                                                    educations.add(jobject);</span><br><span class="line">                                                &#125; <span class="keyword">else</span> <span class="keyword">if</span> (typeStr.equals(<span class="string">"com.linkedin.voyager.identity.profile.Position"</span>)) &#123;</span><br><span class="line">                                                    <span class="comment">// 公司</span></span><br><span class="line">                                                    jobject.remove(<span class="string">"$deletedFields"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"entityUrn"</span>);</span><br><span class="line">                                                    String dateStr = buildRangeDate(commonDate,rangeDate,jobject);</span><br><span class="line">                                                    jobject.accumulate(<span class="string">"rangeDate"</span>, dateStr);</span><br><span class="line">                                                    jobject.remove(<span class="string">"timePeriod"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"company"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"companyUrn"</span>);</span><br><span class="line">                                                    jobject.remove(<span class="string">"$type"</span>);</span><br><span class="line">                                                    experience.add(jobject.toString());</span><br><span class="line">                                                &#125;</span><br><span class="line">                                            &#125;</span><br><span class="line">                                        &#125; <span class="keyword">catch</span> (Exception e) &#123;</span><br><span class="line">                                            logger.error(e.getMessage());</span><br><span class="line">                                            <span class="keyword">continue</span>;</span><br><span class="line">                                        &#125;</span><br><span class="line">                                    &#125;</span><br><span class="line">                                &#125;</span><br><span class="line">                            &#125;</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125;</span><br><span class="line">                    <span class="keyword">try</span> &#123;</span><br><span class="line">                        LinkedInModel model = <span class="keyword">new</span> LinkedInModel();</span><br><span class="line">                        model.setExperiences(experience.toString());</span><br><span class="line">                        model.setEducations(educations.toString());</span><br><span class="line">                        model.setEducations(schools.toString());</span><br><span class="line">                        model.setSkills(skills.toString());</span><br><span class="line">                        <span class="keyword">if</span> (selfInfo.containsKey(<span class="string">"firstName"</span>)) &#123;</span><br><span class="line">                            model.setFirstName(selfInfo.getString(<span class="string">"firstName"</span>));</span><br><span class="line">                        &#125;</span><br><span class="line">                        <span class="keyword">if</span> (selfInfo.containsKey(<span class="string">"lastName"</span>)) &#123;</span><br><span class="line">                            model.setLastName(selfInfo.getString(<span class="string">"lastName"</span>));</span><br><span class="line">                        &#125;</span><br><span class="line">                        <span class="keyword">if</span> (selfInfo.containsKey(<span class="string">"industryName"</span>)) &#123;</span><br><span class="line">                            model.setIndustryName(selfInfo.getString(<span class="string">"industryName"</span>));</span><br><span class="line">                        &#125;</span><br><span class="line"></span><br><span class="line">                        <span class="keyword">if</span> (selfInfo.containsKey(<span class="string">"headline"</span>)) &#123;</span><br><span class="line">                            model.setHeadline(selfInfo.getString(<span class="string">"headline"</span>));</span><br><span class="line">                        &#125;</span><br><span class="line">                        <span class="keyword">if</span> (selfInfo.containsKey(<span class="string">"locationName"</span>)) &#123;</span><br><span class="line">                            model.setAddress(selfInfo.getString(<span class="string">"locationName"</span>));</span><br><span class="line">                        &#125;</span><br><span class="line">                        model.setUniqueUrl(temp);</span><br><span class="line">                        System.out.println(<span class="string">"抓取用户‘"</span>+model + <span class="string">"’数据"</span>);</span><br><span class="line">                    &#125; <span class="keyword">catch</span> (Exception e) &#123;</span><br><span class="line">                        logger.error(e.getMessage());</span><br><span class="line">                    &#125;</span><br><span class="line">                    publicIdentifiers.remove(temp);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">                System.out.println(<span class="string">"登录失败"</span>);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125; <span class="keyword">catch</span> (FailingHttpStatusCodeException e) &#123;</span><br><span class="line">            logger.error(e.getMessage());</span><br><span class="line">        &#125; <span class="keyword">catch</span> (Exception e) &#123;</span><br><span class="line">            e.printStackTrace();</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="comment">/**</span></span><br><span class="line"><span class="comment">     * 重建日期范围</span></span><br><span class="line"><span class="comment">     *</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> commonDate</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> rangeDate</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@param</span> elementObject</span></span><br><span class="line"><span class="comment">     * <span class="doctag">@return</span></span></span><br><span class="line"><span class="comment">     */</span></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> String <span class="title">buildRangeDate</span><span class="params">(JSONObject commonDate,JSONObject rangeDate, JSONObject elementObject)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">if</span>(!elementObject.containsKey(<span class="string">"timePeriod"</span>))&#123;</span><br><span class="line">            <span class="keyword">return</span> <span class="string">""</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        String timeId = elementObject.getString(<span class="string">"timePeriod"</span>);</span><br><span class="line">        JSONObject jsonObject = rangeDate.getJSONObject(timeId);</span><br><span class="line">        String start = <span class="string">""</span>;</span><br><span class="line">        String end = <span class="string">""</span>;</span><br><span class="line">        <span class="keyword">if</span> (jsonObject.containsKey(<span class="string">"startDate"</span>)) &#123;</span><br><span class="line">            start = jsonObject.getString(<span class="string">"startDate"</span>);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">return</span> <span class="string">""</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        JSONObject startDate = commonDate.getJSONObject(start);</span><br><span class="line">        StringBuffer startStr = <span class="keyword">new</span> StringBuffer(startDate.getString(<span class="string">"year"</span>));</span><br><span class="line">        <span class="keyword">if</span> (startDate.containsKey(<span class="string">"month"</span>)) &#123;</span><br><span class="line">            startStr.append(<span class="string">"-"</span> + startDate.getString(<span class="string">"month"</span>));</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span> (startDate.containsKey(<span class="string">"month"</span>) &amp;&amp; startDate.containsKey(<span class="string">"day"</span>)) &#123;</span><br><span class="line">            startStr.append(<span class="string">"-"</span> + startDate.getString(<span class="string">"day"</span>));</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (jsonObject.containsKey(<span class="string">"endDate"</span>)) &#123;</span><br><span class="line">            end = jsonObject.getString(<span class="string">"endDate"</span>);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            <span class="keyword">return</span> startStr.toString();</span><br><span class="line">        &#125;</span><br><span class="line">        JSONObject endDate = commonDate.getJSONObject(end);</span><br><span class="line">        StringBuffer endStr = <span class="keyword">new</span> StringBuffer(endDate.getString(<span class="string">"year"</span>));</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (endDate.containsKey(<span class="string">"month"</span>)) &#123;</span><br><span class="line">            endStr.append(<span class="string">"-"</span> + endDate.getString(<span class="string">"month"</span>));</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">if</span> (endDate.containsKey(<span class="string">"month"</span>) &amp;&amp; startDate.containsKey(<span class="string">"day"</span>)) &#123;</span><br><span class="line">            endStr.append(<span class="string">"-"</span> + endDate.getString(<span class="string">"day"</span>));</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> startStr.toString() + <span class="string">"至"</span> + endStr.toString();</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="打包"><a href="#打包" class="headerlink" title="打包"></a>打包</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mvn install -Dmaven.test.skip=<span class="literal">true</span></span><br></pre></td></tr></table></figure>

<p>在项目目录<code>target</code>目录下找对应<code>jar</code>包</p>
<h3 id="运行"><a href="#运行" class="headerlink" title="运行"></a>运行</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">java -jar linkedin-1.0.jar param1 param2 param3</span><br></pre></td></tr></table></figure>

<p><em>注意</em>：</p>
<ul>
<li>param1 用户名</li>
<li>param2 密码</li>
<li>param3 爬取点</li>
</ul>
<p>这三个参数必填</p>
<h3 id="结果"><a href="#结果" class="headerlink" title="结果"></a>结果</h3><figure class="highlight console"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Roger', lastName='Gu', industryName='Mechanical or Industrial Engineering', headline='Greater China Finance Controller at Perkinelmer Instrument Shanghai Co., Ltd.', address='Shanghai City, China', educations='[&#123;"schoolName":"Shanghai University of Finance and Economics"&#125;]', experiences='[&#123;"companyName":"KPMG Audit","title":"Assistant Manager","rangeDate":"1998-7至2003-11"&#125;,&#123;"locationName":"Shanghai City, China","companyName":"Perkinelmer","description":"China finance head, overall finance responsibility","title":"Greater China Finance Controller","region":"urn:li:fs_region:(cn,8909)","rangeDate":"2011-1"&#125;,&#123;"locationName":"Shanghai City, China","companyName":"Moog","description":"China finance head. Overall finance responsibility.","title":"China Finance Controller","region":"urn:li:fs_region:(cn,8909)","rangeDate":"2007-12至2010-7"&#125;,&#123;"companyName":"Eaton","title":"Finance manager","rangeDate":"2004-2至2007-12"&#125;]', skills='["Financial Analysis","US GAAP","SOX","internal control","Hyperion Enterprise","China region","Fortune 500","Accounts Receivable","costing","IFRS","Auditing","Financial Analysis","Manufacturing","contract review","US GAAP","Internal Controls","forecast","compliance","Sarbanes-Oxley Act","Cash Flow","SOX","internal control","Pricing","Budgets","legal","Treasury","Financial Integration","Due Diligence","cash flow management","Tax","corporate finance","Target Costing","Inventory Control","Contract Management","Forecasting","ERP","credit control","Financial Reporting","budgeting","working capital management"]', uniqueUrl='roger-gu-698a036', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Arun', lastName='Krishnan', industryName='Information Technology &amp; Services', headline='IT Support Engineer', address='Wellington &amp; Wairarapa, New Zealand', educations='[&#123;"schoolName":"Eastern Institute of Technology"&#125;,&#123;"schoolName":"Eastern Institute of Technology"&#125;]', experiences='[&#123;"locationName":"India","companyName":"Software Paradigms Infotech Pvt Ltd","description":"Key Responsibilities:\n\n•\tImproving the implemented software module designs according to business requirements and ensuring smooth running of business processes for Ahold (Dutch Retailer in US) on IBM Mainframes.\n\n•\tBack-end development and support operations for Mainframe batch processes.\n\n•\tUnderstanding and analyzing the business needs and improvement areas\n\n•\tEnhancement/Development of applications according to Client service requests\n\n•\tResponsible for preparation of test plans and verification of solution\n\n•\tDaily tasks in Accounts Payable and Accounts Receivable accounts which included Client Interaction and problem resolution\n","title":"Software / Support Engineer","rangeDate":"2012-1至2013-3"&#125;,&#123;"locationName":"Auckland, New Zealand","companyName":"CallPlus Group","description":"Key Responsibilities\n\n•\tInternet service setup and troubleshooting\n\n•\tHelp and Coaching Customers with Internet Technology\n\n•\tFault logging and follow up with Chorus Communications\n\n•\tModem configuration and setup\n\n•\tOther Slingshot product support \n","title":"Technical Customer Service Representative","region":"urn:li:fs_region:(nz,9194)","rangeDate":"2015-10至2016-2"&#125;,&#123;"locationName":"Nizwa, Oman","companyName":"Al Harby Enterprises LLC","description":"Key Responsibilities\n\n•\tMaintenance and Support of office software and IT infrastructure\n\n•\tDiagnosing and Troubleshooting Windows operating environment issues\n\n•\tAssisted customers to get the best products in the market\n\n•\tBusiness development and sales strategy \n\n•\tDaily company operations\n\n","title":"Customer Service and Support","rangeDate":"2013-3至2014-2"&#125;,&#123;"locationName":"Wellington &amp; Wairarapa, New Zealand","companyName":"GTB IT Solutions Ltd","description":"Key Responsibilities:\n\nDeployment and Support:\n\n•\tWindows Server – 2003, 2008 &amp; 2008R2, 2012 &amp; 2012R2\n\n•\tWindows Desktop Support – Win 7, 8, 8.1 &amp;10\n\n•\tNetworks – Mikrotik Router, Network peripherals, Broadband &amp; Fibre Internet\n\n•\tVOIP Phone Systems – Voyager CVS, Grand stream phones\n\n•\tDisaster Recovery – Shadow Protect, KIS\n \n•\tCloud Technology – Office 365\n\n•\tApplication Support – Medtech32, Affinity, Exact Dental\n\n•\tERP and CRM - ConnectWise\n\n","title":"IT Engineer","region":"urn:li:fs_region:(nz,9204)","rangeDate":"2016-2"&#125;]', skills='["ERP","COBOL","C#","Microsoft SQL Server","ERP","Technical Support","SQL DB2","Disaster Recovery","JavaScript","COBOL","Help Desk Support","SQL","Java","C#","Customer Service","Networking","Microsoft SQL Server","Infrastructure","Information Technology"]', uniqueUrl='arunkrishnanict', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='談珈維', lastName='William Tan', industryName='Logistics &amp; Supply Chain', headline='LinkedIn Pioneer in Taiwan', address='New Taipei City, Taiwan', educations='[&#123;"schoolName":"National Chung Hsing University"&#125;]', experiences='[&#123;"locationName":"Taipei, Taiwan","companyName":"Exel – merged by DHL on 2007","description":"Link export clearance data with the Customs\nTransit export clearance data to the Customs database\nLeading the export clearance team to finish the export procedure smoothly\nInstruct the airport team launch the freight into cargo terminal and match with the export clearance data saved in the Customs database\nNotify the traffic department to arrange dedicated trucker to deliver consolidation pouch to the airline counter on timely manner\nCoordinate with space booking, customer service, operation, export clearance &amp; airport team completely\nExport clearance problem solving\nExport declaration data revised per shipper and the Customs officer","title":"EDI Officer","rangeDate":"2006-1至2006-12"&#125;,&#123;"locationName":"Taipei City, Taiwan","companyName":"Taipei Metro/Taipei Rapid Transit Corporation (TRTC,台北大眾捷運公司) - Contract","description":"Customer Service","title":"Customer Service Administrator","region":"urn:li:fs_region:(tw,9225)","rangeDate":"2015-1"&#125;,&#123;"locationName":"New Taipei City, Taiwan","companyName":"Self-Employed","description":"1. Update profile periodically\n2. Build up and enforce my professional nerwork\n3. Read some influencers and talents post and leave my feedback\n4. Get insights from others and inspire others by return\n","title":"LinkedIn Pioneer in Taiwan","region":"urn:li:fs_region:(tw,9226)","rangeDate":"2011-3"&#125;,&#123;"locationName":"Taipei, Taiwan","companyName":"Exel – merged by DHL on 2007","description":"Customer Service team leader (leading 4 staff)\nMonitor member routine job and mentoring the new staff\nCustomer and staff problem solving\nAssist junior staff to do the job and solve their irregular problem \nForwarding problems and special conditions solving for customers both from Taiwan and overseas station.\nFollow request by overseas station from consignee to communicate with shipper Taiwan to arrange shpt export.","title":"Customer Service team Leader","rangeDate":"2005-1至2005-12"&#125;,&#123;"locationName":"Taipei, Taiwan","companyName":"DHL GLOBAL FORWARDING Taiwan Branch","description":"Assist junior staff to do the job and solve their irregular problem\nArrange air shipment export from Taiwan, sometimes may contact with vendor's factory in Mainland China &amp; Hong Kong.\nFollow request by overseas station from consignee to communicate with shipper Taiwan to arrange shipment export.\nForwarding problems and special conditions solving for customers both from Taiwan and overseas station.\nDoor to Door shipment tracing from destination side and airlines. Missing and shortland cargo tracing.","title":"Senior Customer Service Officer","rangeDate":"2007-1至2009-5"&#125;]', skills='["Export","Logistics","Freight Forwarding","Supply Chain","Transportation","Contract Negotiation","Freight Management","Export","Market Planning","Market Analysis","Shipping","Global Logistics","International Trade","Customer Relations","Air Freight","Business Relationship Building","Operations Management","Team Management","Team Leadership","Market Development","Sales","Business Development","Business Strategy","Freight","Import","Sales Management","EDI","3PL","Management","Key Account Management","Sales Operations","Operational Planning","International Sales","Business Analysis","New Business Development","Leadership","Direct Sales","Logistics Management","Problem Solving","Sourcing","Pricing","Customer Service","Marketing Strategy","Business Relationship Management","International Logistics","International Business","Supply Chain Management","Team Building","Negotiation","Logistics","Business Planning","Account Management","Freight Forwarding","Supply Chain"]', uniqueUrl='tanjiawei', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Hans', lastName='Wiens', industryName='Information Technology &amp; Services', headline='Managing Partner - The New Network', address='Calgary, Alberta, Canada', educations='[&#123;"schoolName":"University of Calgary"&#125;,&#123;"schoolName":"Memorial University of Newfoundland"&#125;]', experiences='[&#123;"locationName":"Calgary, Canada Area","companyName":"Axia NetMedia Corp.","description":"FibreNet is Axia's way of doing business. We sell fast, reliable transport services using the most intelligent data management systems to deliver maximum performance at every moment on our networks. \n\nFor over a decade, we have focused our business on areas where access to high bandwidth fibre infrastructure did not exist. Our success has been our ability to develop networks using the most technologically advanced, expertly engineered fibre technology to provide customers with superior performance and control. We have focused primarily on rural communities to bridge the digital divide by building the most reliable digital infrastructure – resulting in clear economic, communication, and educational benefits in these communities. We have done this for customers in Alberta, Massachusetts, and as far away as France.","title":"Enterprise Account Executive","region":"urn:li:fs_region:(ca,4882)","rangeDate":"2014-5至2015-4"&#125;,&#123;"locationName":"Calgary, Canada Area","companyName":"Ricoh Canada Inc.","description":"Ricoh is a global information and technology company building on our legacy of workstyle innovation in a new world of work. With a strong history of introducing new technologies into the workplace and deep expertise in managing and accessing information, Ricoh continues to change the way people work today with innovative products and dynamic solutions that help businesses grow and profit.\n\nIn my role as a legal specialist I was responsible for bringing the largest, most comprehensive and experienced organization of document services and eDiscovery resources to work for the legal community.","title":"Strategic Accounts, Legal Specialist","region":"urn:li:fs_region:(ca,4882)","rangeDate":"2011-9至2014-5"&#125;,&#123;"companyName":"Canon Canada","description":"Headquartered in Mississauga, Ontario, the company employs 1,200 people at its offices nation-wide, servicing the Canadian market from coast to coast. Innovation and cutting-edge technology have been essential ingredients in Canon's success. Canon's leadership in imaging, optical and document management technology and solutions is based in large part on the thousands of patents the company has secured throughout its history. Since 1994, Canon Inc. is among the top four US patent recipients. \n\nAs a member of the production press team I worked within complex printing environments to build systems that optimized efficiency and profitability, which delivered a competitive advantage to our clients.","title":"Production Press Specialist","rangeDate":"2010-3至2011-8"&#125;,&#123;"companyName":"The New Network","title":"Managing Partner","rangeDate":"2017-3"&#125;,&#123;"locationName":"Calgary, Canada Area","companyName":"Gartner","description":"Gartner, Inc. (NYSE: IT) is the world’s leading information technology research and advisory company. We deliver the technology-related insight necessary for our clients to make the right decisions, every day. From CIOs and senior IT leaders in corporations and government agencies, to business leaders in high-tech and telecom enterprises and professional services firms, to technology investors, we are the indispensable partner to 60,000 clients in 10,000 distinct organizations. Through the resources of Gartner Research, Gartner Consulting and Gartner Events, we work with every client to research, analyze and interpret the business of IT within the context of their individual role. Founded in 1979, Gartner is headquartered in Stamford, Connecticut, U.S.A., and has 3,900 associates, including 1,200 research analysts and consultants in 75 countries.","title":"Account Executive","region":"urn:li:fs_region:(ca,4882)","rangeDate":"2015-4"&#125;]', skills='["Management","Business Development","Solution Selling","Sales","Lead Generation","LinkedIn","Vertical Marketing","Knowledge Sharing","Strategy","Negotiation","Change Management","Sales Operations","Product Development","Leadership","Social Media","Strategic Planning","Change Catalyst","Conflict Management","Marketing","Sales Coaching","Business Partner Support","Entrepreneurship","Management","Business Process Improvement","Project Management","Business Development","Coaching","Telecommunications","Solution Selling","Translation","Customer Service","Mentoring","Thought Leadership","Sales Process","Integration","Professional Services","Team Leadership","Networking","Team Building","Account Management","Information Management Solutions","Sales Management","Sales"]', uniqueUrl='hans-wiens-07277734', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Art', lastName='McGrath', industryName='Information Technology &amp; Services', headline='Marketing Director/Nationwide Corporate Events', address='Cerritos, California', educations='[]', experiences='[&#123;"locationName":"Torrance, ca","companyName":"PCM","description":"Duties included planning, forecasting, P&amp;L, marketing, and ad sales during all stages of the product lifecycle for the Hewlett Packard portfolio. \n•\tCreated business development management team and developed bid desk procedures to increase B2C and B2B clients. Three direct reports handling bid desk and training\n•\tDeveloped procedures that bridged departments within the company to increase efficiencies to help sales support response time resulting in sales growth\n•\tExecuted product reorganization when HP purchased Compaq. Over 300,000 part numbers, 500+ web pages/banners, and 100+ pages in multiple print catalogs were redesigned","title":"Senior Product Manager","rangeDate":"2000至2004"&#125;,&#123;"companyName":"DMGC Events","description":"Handling all sales, planning, contracts, budgets, and execution of all events. I specialize in trade shows, nationwide corporate meetings, golf tournaments, incentive trips, and experimental events. \n•\tCompleted over 40 corporate events in 10 different states with over 20,000 attendees\n•\tLargest event 42,000sq ft arena with 30'x30' stage, A/V, Lighting, F&amp;B, entertainment, staff, and onsite management","title":"Nationwide Corporate Events, Owner","rangeDate":"2012-8"&#125;,&#123;"locationName":"El Segundo","companyName":"PCM","description":"•\tPlanned, designed, and executed B2C and B2B events including yearly 45,000sq ft. HP EXPO including complete product lines for over 1000 customers generating $57 million in revenue, $17 million net new customers\n•\tDesigned and improved the effectiveness of core marketing procedures for marketing and sales departments, which increased communication, speed, and reliability between sales, marketing, accounting, and tech support\n•\tSpearheaded product strategy and quarterly business reviews to manufacturers and internal executive team\n•\tBuilt pilot programs with HP that turned into industry standards for net new customers","title":"Senior Marketing Manager","rangeDate":"2004-1至2008-10"&#125;,&#123;"locationName":"Heartwell Golf Course","companyName":"American Golf Corporation","description":"Responsible for all operational aspects of the pro-shop with a pro-active spirit and a passion for customer service. Focused on revenue with an entrepreneurial problem-solving mind set to create a positive environment for the staff, clients and guests.\n\nMembership Marketing and Sales: refine and implement a marketing strategy to recruit and enroll new memberships; identifies opportunities to promote the club locally. meets with prospective members to present and clearly communicate membership options; accepts and facilitates new membership applications.\n\n","title":"Membership Sales/Pro Shop","rangeDate":"2015-4"&#125;,&#123;"locationName":"El Segundo","projects":["urn:li:fs_project:(ACoAAACtRAkBrc7hTbgigQTkVk5SN8XkOfr-oHY,317673624)","urn:li:fs_project:(ACoAAACtRAkBrc7hTbgigQTkVk5SN8XkOfr-oHY,321027082)"],"companyName":"PCM","description":"•\tBuilt multi-level marketing plans and budgets for HP, Dell, and Lenovo covering enterprise, SMB, government, education, and retail sales organizations. Resulted in 30% avg. growth YoY\n•\tConverted yearly company event from single day internal only to multi day event including internal employees, vendors, and customers: 200+ manufacturers, 300+ customers, and 100+ employees. Doubled event size in two years which increased the sales and marketing department’s reach for net new business \n•\tDeveloped pilot program with HP and Lenovo focused on building relationships with local customers responsible for over generating $25 million in net new business in 3 years\n•\tHosted multiple offsite think-tanks bringing together marketing, sales, and customers. Resulted in 20% YoY average increase of revenue from top 20 customers\n•\tManaged offsite team building meeting for marketing department focused on Five Dysfunctions of a Team, Myers Briggs, and Strengthsfinder 2.0","title":"Director of Marketing and Vendor Management ","rangeDate":"2008-1至2012-8"&#125;]', skills='["Account Management","B2B","Business Development","Multi-channel Marketing","HP","Channel Partners","Incentive Programs","Salesforce.com","Marketing","Lead Generation","Customer Relationship Management (CRM)","Strategy","Customer Service","Marketing Management","Account Management","Business Development","CRM","Market Planning","Demand Generation","Product Marketing","Coordinating Events","Sales Operations","B2B","Channel","Leadership","Product Management","Direct Sales","Marketing Strategy","Team Building","Multi-channel Marketing","Online Marketing","Enterprise Software","Business-to-Business (B2B)","Solution Selling","Sales","Management","Resellers","Go-to-market Strategy","Strategic Partnerships","Customer Acquisition"]', uniqueUrl='artmcgrath', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Steve', lastName='Sanchez', industryName='Information Technology &amp; Services', headline='Client Solutions Specialist', address='Long Beach, California', educations='[]', experiences='[&#123;"locationName":"Torrance California","companyName":"Dell","title":"Precision Workstation Specialist","rangeDate":"2012-7至2015-9"&#125;,&#123;"locationName":"El Segundo California","companyName":"PCMALL","title":"HP PSG Business \nDevelopment Manager","rangeDate":"2007-6至2012-7"&#125;,&#123;"companyName":"Dell Technologies","title":"Client Solutions Specialist","rangeDate":"2015-9"&#125;]', skills='["Direct Sales","Channel Partners","Sales Process","Solution Selling","Lead Generation","Direct Sales","Sales Operations","Channel Partners","Strategic Partnerships","Business Development","Sales Process","Salesforce.com","New Business Development","Solution Selling","Account Management"]', uniqueUrl='steve-sanchez-2a9b7961', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='grace', lastName='fsmaidiqi', industryName='Construction', headline='Export manager at FoShan Medici Building Material CO.,LTD', address='Foshan, Guangdong, China', educations='[&#123;"schoolName":"Henan University"&#125;]', experiences='[&#123;"companyName":"JIN WANG CERAMIC DESIGN COMPANY","description":"entertain the foreigners and as a translator of our boss","title":"translator","rangeDate":"2011-7至2013-3"&#125;,&#123;"companyName":"foshan mdc ceramic","description":"export","title":"Sales Manager in FOSHAN MDC BUILDING MATERIAL COMPANY","rangeDate":"2011-3"&#125;,&#123;"companyName":"Fo Shan medici building material co.,ltd","description":"sales the ceramic tiles","title":"export manager","rangeDate":"2011-3"&#125;,&#123;"companyName":"FOSHAN MEDICI BUILDING MATERIAL CO.LTD","description":"shows our products and serve for customers","title":"sales manager","rangeDate":"2013-3"&#125;]', skills='["Marketing","ceramic tile skills","English","Marketing Communications","Leadership","Business Development","Negotiation","Sales","Marketing","hexagonal tiles","New Business Development","Market Research","Contract Negotiation","Contract Management","ceramic tile skills","Business Planning","Project Management","Procurement","English","Marketing Strategy","Marketing Communications","Purchasing","porcelain tiles","Strategic Planning","Team Building","Project Coordination","backsplash tiles","Team Leadership","Project Planning","Social Media","Product Development","Public Relations","Construction","subway tiles","Sales Management","Business Strategy","International Sales","wood tiles"]', uniqueUrl='grace-fsmaidiqi-5b6b326a', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Mika', lastName='Enberg', industryName='Information Technology &amp; Services', headline='General Manager for Dell EMC Finland', address='Helsinki Area, Finland', educations='[]', experiences='[&#123;"companyName":"Dell","description":"Managed key global customers for Dell.","title":"Account Director, Global","rangeDate":"2010-9至2012-2"&#125;,&#123;"companyName":"Intel","description":"I managed the Small Form Factor Ecosystem Enabling including MeeGo for EMEA.","title":"Manager Mobile Ecosystem Enabling EMEA","rangeDate":"2010-1至2010-9"&#125;,&#123;"companyName":"Intel","description":"I managed a team running the strategic and day-to-day operations with Intel customers in Finland.","title":"District Sales Manager","rangeDate":"2002-1至2003-12"&#125;,&#123;"companyName":"Intel","description":"I managed the Essential Software Enabling team globally.","title":"Manager Global Enabling SW Partners","rangeDate":"2004-1至2009-12"&#125;,&#123;"locationName":"Espoo, Finland","companyName":"Dell","title":"GM","rangeDate":"2012-2"&#125;]', skills='["Management","Solution Selling","Business Development","Strategy","Product Management","Customer Relations","LTE","Market Research","Press Releases","Wireless","Business Development","Marketing","Online Marketing","Marketing Management","Strategy","Product Development","Mobile Communications","Product Marketing","Solution Selling","Strategic Partnerships","Telecommunications","Mobile Devices","Market Planning","Account Management","Marketing Research","Project Planning","Planning","Forecasting","Android","Channel Partners","Sales Management","Sales","Start-ups","Event Management","Management","Analysis","Go-to-market Strategy","Public Relations","Social Media","Marketing Communications","Marketing Strategy","Direct Marketing"]', uniqueUrl='mikaenberg', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Tohid', lastName='Patel', industryName='Health, Wellness &amp; Fitness', headline='OFFICER STORES AT AMI BIOTECH PVT.LTD', address='Bharuch, Gujarat, India', educations='[&#123;"schoolName":"Gujarat University"&#125;]', experiences='[&#123;"locationName":"Vadodara Area, India","companyName":"Ami Biotech Pvt. Ltd.","description":"office work and sales executive an other","title":"Store Officer","region":"urn:li:fs_region:(in,6552)","rangeDate":"2016-7"&#125;,&#123;"companyName":"McDonald's","description":"cash counter and kitchen handling ","title":"Assistant","rangeDate":"2015-2至2015-7"&#125;,&#123;"locationName":"Vadodara Area, India","companyName":"Ami Biotech Pvt. Ltd.","description":"store responsibility and office work.\n\n","title":"Executive","region":"urn:li:fs_region:(in,6552)","rangeDate":"2016-7"&#125;,&#123;"locationName":"Vadodara Area, India","companyName":"Ami Biotech Pvt. Ltd.","description":"product responsibility\n","title":"Store Officer","region":"urn:li:fs_region:(in,6552)","rangeDate":"2016-7"&#125;]', skills='["Management","Microsoft Excel","Microsoft Office","Customer Service","Microsoft Word","Public Speaking","Team Management","Team Building","Business Development","Negotiation","Leadership","Management","Strategic Planning","Microsoft Excel","Microsoft PowerPoint","Marketing","Microsoft Office","Customer Service","Training"]', uniqueUrl='tohid-patel-428a72128', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Roy', lastName='Liu', industryName='Law Practice', headline='Managing Partner at lifang &amp; Partners', address='Guangzhou City, Guangdong, China', educations='[&#123;"schoolName":"University of Jinan"&#125;,&#123;"schoolName":"Peking University"&#125;]', experiences='[&#123;"companyName":"Scihead &amp; Partners Intellectual property lawyers","title":"managing partner","rangeDate":"2003-8至2008-8"&#125;,&#123;"locationName":"Guangzhou, China","companyName":"lifang &amp; Partners Law Firm","description":"Lifang &amp; Partners, founded in 2002, has established a reputation as one of the country’s leading law firms concentrating on intellectual property law and has a broad range of commercial law practices including corporate and capital market, banking and finance, dispute settlement and counseling for industries in which IPR protection is extremely important.\n\nWith offices strategically located in Beijing, Guangzhou and Wuhan, the emphasis of our firm’s practice is providing legal services and business solutions in intellectual property, energy, insurance, investment, telecommunications and other high-tech industries and international trade matters. \n\nLifang’s partners have education background in first class law schools in and outside China. Most of them previously worked for China’s central government or in the court. They are supported by dozens of lawyers, patent agents, foreign legal counsel, and a professional administrative team. With their dedication, Lifang has grown rapidly and provides high-quality legal services and business solutions based on a sound knowledge of PRC law and practice, and an understanding of each individual client’s needs.\n\nIn addition, Lifang retains a number of reputed legal experts as our senior consultants, who ensures that we always provide our clients with the best available representation in intellectual property matters.\n\nLifang was named IP Law Firm of the Year by the Asian Legal Business for consecutive years from 2008 to 2010. In 2010, the firm is ranked in Band 2 of Intellectual Property firms in Chambers Asia 2011 and two Lifang lawyers are featured as Leaders in their Field. Further, the 2011 World IP Survey by Managing Intellectual Property has also nominated and ranked Lifang in all the major IP categories, patent, trademark and copyright.","title":"Managing Partner of Guangzhou Office/ Attorney at law/ Patent Attorney","rangeDate":"2010-1"&#125;]', skills='["Copyright Law","Legal Advice","Corporate Law","Litigation","Commercial Litigation","Intellectual Property","Legal Assistance","Patents","Patent Litigation","Trademarks","Patents","Trademarks","Intellectual Property","Patent Litigation"]', uniqueUrl='roy-liu-500b4330', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Will Jian', lastName='WU', industryName='Retail', headline='Multi-functional professional in Retail/RE', address='Jing’an District, Shanghai, China', educations='[&#123;"schoolName":"Sichuan International Studies University"&#125;,&#123;"schoolName":"The University of Hong Kong"&#125;]', experiences='[&#123;"courses":["urn:li:fs_course:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,61)","urn:li:fs_course:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,62)"],"locationName":"Shanghai","companyName":"L'Oréal","title":"Strategic Planning &amp; Portfolio Manager | China","rangeDate":"2016"&#125;,&#123;"courses":["urn:li:fs_course:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,60)"],"locationName":"Beijing","companyName":"JLL","title":"Sr. Consultant | Research &amp; Retail | North China","honors":["urn:li:fs_honor:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,116)","urn:li:fs_honor:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,117)"],"rangeDate":"2010至2013"&#125;,&#123;"locationName":"Shanghai/Hong Kong/Tokyo","companyName":"Fast Retailing","organizations":["urn:li:fs_organization:(ACoAAANznO8BZjCkz9fUQWQtzpYzHpA7rzWqYKI,206273172)"],"title":"BD &amp; Project Manager | Theory &amp; Helmut Lang | China","rangeDate":"2013至2016"&#125;]', skills='["Market Research","Data Analysis","Strategic Planning","Business Development","Retail","Public Relations","Market Research","Real Estate Development","Management","Data Analysis","Tenant Representation","Strategic Planning","Business Development","Negotiation"]', uniqueUrl='williamswu', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Vishal', lastName='Naik', industryName='Marketing &amp; Advertising', headline='Product Marketing at MomentFeed', address='Greater Los Angeles Area', educations='[&#123;"schoolName":"University of California, Santa Barbara"&#125;]', experiences='[&#123;"locationName":"Santa Barbara, California Area","companyName":"UCSB Intercollegiate Athletics","title":"Marketing Intern","region":"urn:li:fs_region:(us,748)","rangeDate":"2003-9至2004-6"&#125;,&#123;"locationName":"Torrance, CA","companyName":"PCM","title":"Marketing Manager","rangeDate":"2008-6至2011-10"&#125;,&#123;"locationName":"Santa Monica, CA","companyName":"MomentFeed","description":"When you’re on your phone, every recommendation is based on your location. These ‘mobile moments’ last only seconds, but we help ensure that our clients’ stores are always the top choice. We also help retailers and restaurant chains manage two-way consumer conversations from every one of their locations as if the local manager were responding. MomentFeed’s software improves the mobile customer experience for the world’s leading multi-location brands.","title":"Director, Product Marketing","rangeDate":"2017-1"&#125;,&#123;"locationName":"El Segundo, CA","companyName":"PCM","title":"Senior Marketing Manager","rangeDate":"2011-10至2013-11"&#125;,&#123;"locationName":"El Segundo, CA","companyName":"PCM","title":"Director of Marketing","rangeDate":"2013-11至2017-1"&#125;]', skills='["Strategy","Product Marketing","Marketing","Marketing Management","Team Leadership","Brand Management","Demand Generation","Strategic Partnerships","Marketing","Customer Retention","Brand Development","Team Building","Content Development","E-commerce","Google Analytics","SEM","Business Planning","WordPress","Display Advertising","Online Advertising","Web Analytics","Lead Management","Competitive Analysis","Partner Management","Management","Business-to-Business (B2B)","Market Research","Customer Acquisition","SEO","Marketing Management","SaaS","Strategy","Integrated Marketing","Pricing","Social Media","Product Marketing","P&amp;L Management","Business Development","Digital Strategy","Business Strategy","Microsoft Excel","Multi-channel Marketing","Go-to-market Strategy","Product Management","Lead Generation","B2B","Email Marketing","Social Media Marketing","Leadership","Advertising","Corporate Branding","Marketing Strategy","Account Management","Digital Marketing"]', uniqueUrl='van6683', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Navdeep', lastName='Joshi, PMP &amp; CAPM', industryName='Information Technology &amp; Services', headline='CA PPM - Functional at Rego Consulting', address='Bengaluru Area, India', educations='[&#123;"schoolName":"Guru Gobind Singh Indraprastha University"&#125;]', experiences='[&#123;"locationName":"Hyderabad","companyName":"CA Technologies","description":"1.\tUsed analytical and problem solving skills to provide support and assistance on usage of tool to the business users, whilst making sure that the required PLA / OLAs are met.\n1.1\tProvided technical-functional support\n1.2\tAnswered any queries related to the usage of certain parts of the tool\n2.\tResponsible for retrieval of desired data from the tool as per the business needs, and presenting the data in a manner such that the data can be easily analyzed – This involves running reports on ad-hoc basis, or data retrieval from portlets.\n3.\tInvolved in configuration changes of the PPM tool – Responsible for scheduled deployments to the tool","title":"Sr. Application Developer","rangeDate":"2012-10至2013-9"&#125;,&#123;"locationName":"Bengaluru Area, India","companyName":"Future Focus Infotech Private Limited","title":"Sr. Consultant - CA PPM","region":"urn:li:fs_region:(in,5281)","rangeDate":"2014-11"&#125;,&#123;"locationName":"Bengaluru Area, India","companyName":"Rego Consulting","description":"1. Provide functional support for CA PPM\n2. Create monthly support reports\n3. Assist in data manipulation/changes on CA PPM\n4. Create internal/external knowledge management database","title":"CA PPM - Functional","region":"urn:li:fs_region:(in,5281)","rangeDate":"2015-9"&#125;,&#123;"locationName":"Bengaluru Area, India","companyName":"NxGET – (Client - CA Technologies, Hyderabad (ITC))","description":"1.\tUsed analytical and problem solving skills to provide support and assistance on usage of tool to the business users, whilst making sure that the required PLA / OLAs are met.\n1.1\tProvided technical-functional support\n1.2\tAnswered any queries related to the usage of certain parts of the tool, e.g Auditing attributes – The client is new to the tool and hence requires hand-holding when needed.\n\n2.\tResponsible for retrieval of desired data from the tool as per the business needs, and presenting the data in a manner such that the data can be easily analyzed – This involves running reports on ad-hoc basis, or data retrieval from portlets.\n\n\n3.\tInvolved in configuration changes of the PPM tool – Responsible for scheduled deployments to the tool\n\n4.\tAct as a mediator between the business and the development team","title":"Sr. Consultant - Clarity PPM","region":"urn:li:fs_region:(in,7127)","rangeDate":"2014-4至2014-11"&#125;,&#123;"courses":["urn:li:fs_course:(ACoAAAHC1ZkBxEd0ObmFOF__7qGwjukyxgbgZsM,1)"],"locationName":"Bengaluru Area, India","companyName":"Infosys (via Future Focus)","description":"1. Used analytical and problem solving skills to provide functional support and assistance on usage of tool to the business users, whilst making sure that the required PLA / OLAs are met.\n\n2. Responsible for retrieval of desired data from the tool as per the business needs, and presenting the data in a manner such that the data can be easily analyzed – This involves running reports on ad-hoc basis, or data retrieval from portlets.\n\n3. Involved in configuration changes of the PPM","title":"Sr. Consultant - Clarity PPM","region":"urn:li:fs_region:(in,7127)","rangeDate":"2014-11至2015-8"&#125;]', skills='["Integration","Oracle","Release Management","CA Clarity","MS Project","Microsoft SQL Server","IT Management","Open Workbench","Clarity","Project Portfolio Management","Integration","Visio","Troubleshooting","Requirements Analysis","Microsoft Project","Oracle","Cloud Computing","Project Management","Business Analysis","Release Management","Team Management","PMP","CA Clarity","Management","PL/SQL"]', uniqueUrl='navdeep-joshi-pmp-capm-389a8a9', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Chris', lastName='Swadish', industryName='Information Technology &amp; Services', headline='CTO &amp; VP  IT Transformation | Cloud | Data Center | SDDC | SaaS | ITSM | ITSOM | ITIL | Cyber Security', address='Greater Los Angeles Area', educations='[&#123;"schoolName":"Mt Sierra College"&#125;,&#123;"schoolName":"Mt Sierra College"&#125;,&#123;"schoolName":"Caltech"&#125;]', experiences='[&#123;"locationName":"El Segundo, CA","companyName":"PC Mall Services","description":"Executive Leadership for PC Mall Subsidiary responsible for centralizing engineering, consulting, services and support for six (6) PC Mall companies and subsidiaries\n\n• Executive leadership, consulting, service delivery and support for six PC Mall companies\n• Led Global high performance team of 1200 personnel \n• IT strategy, policies and procedures, inclusive of data management, analytics, reporting, information systems, business continuity, infosec, and continuous improvement\n• Developed 3rd party service delivery network to broaden footprint of service delivery model \n• P&amp;L, inclusive of project budgets, program budgets, multi-year plans\n• Executive alliances, business relationship management and vendor engagement\n• Developed organizational strategies and approaches for M&amp;A activates\n• HR and staff leadership responsibilities; maintain appropriate staffing levels and functions; training, career planning, compensation plans, staff performance appraisals and succession planning ","title":"President","rangeDate":"2009-11至2010-12"&#125;,&#123;"companyName":"SARCOM, INC","description":"Global functional leadership and general management of SARCOM's Solution Architecture and Services business","title":"Vice President","rangeDate":"2005-1至2013-1"&#125;,&#123;"locationName":"El Segundo","companyName":"PCM","organizations":["urn:li:fs_organization:(ACoAAABvuIgB2WHZCK3iKvxzkCwDiORbFXu0roM,2120081472)","urn:li:fs_organization:(ACoAAABvuIgB2WHZCK3iKvxzkCwDiORbFXu0roM,2120283515)","urn:li:fs_organization:(ACoAAABvuIgB2WHZCK3iKvxzkCwDiORbFXu0roM,2120325197)"],"description":"Driving innovation, simplification and strategic alignment of Solutions and Services business across all PCM companies and customer market segments, with a focus of integrating solution development efforts with Professional &amp; Managed Services\n\n• Integrated solution development efforts with professional, managed and life cycle services\n• Led cross functional teams to drive strategy, portfolio, revenue and business alignment\n• Double-digit expansion into vertical markets (healthcare, gov, retail, banking, cloud, security mobility)\n• Served as contracted/outsourced CIO/CTO in customer organizations\n• Driving success and improvements by leveraging ITSM, ITSOM, ITIL, Agile, &amp; best practices\n• Leadership and management for hundreds of internal and customer owned enterprise projects ranging from $200k to $35M\n• Led technical teams operating in mission-critical IT environments\n• Leveraged Enterprise Architecture, ITSOM, ITIL and best practices to drive improvements\n• Orchestrating mergers, acquisitions, and enterprise integration\n• Managed cross functional teams of Engineering, Services, Product Management, Marketing, &amp; Business Development professionals\n• Maintain appropriate staffing levels and functions; training, career planning, comp plans, performance appraisals, &amp; succession planning \n• Active in industry councils, leveraging relations to drive creation of innovative solutions and services, decreasing speed to market\n• Industry executive speaking engagements on technology, vision, strategy and operations\n• Extensive budget and P&amp;L management","title":"CTO &amp; Vice President, IT Solutions &amp; Services","rangeDate":"2010-12至2016-6"&#125;,&#123;"companyName":"Softchoice","title":"Data Center Business Leader","rangeDate":"2016-7"&#125;,&#123;"companyName":"PC Mall","description":"Global functional leadership and general management of PC Mall's Solution Architecture and Service business: six direct reports and 240 employees across USA, Canada and Philippines\n\n• Developed strategic technology practices and portfolio: cloud, virtualization, collaboration, security, mobility, networking and application development, averaged $650M annual sales revenue\n• Key role in enterprise alliances and affiliations with major industry players (Cisco, Amazon, Microsoft, VMware, and HP)\n• Launched healthcare division created to provide IT design, implementation, and change management services to healthcare markets\n• Vendor technology selection &amp; engagement strategies, service contracts, authorizations, and program management (Including: Cisco Gold, HP Elite, Microsoft LAR, Symantec Platinum, VMware Platinum)\n• Built Project Management Office (PMO) ensuring accurate and profitable project delivery and maintaining &gt;98% customer satisfaction through adherence to PMBOK and PMI practices\n• Provided proactive management of SLAs, commitments and customer expectations throughout project lifecycle\n• Created consulting team to foster management skills, best practices, ITIL standards, compliance and governance, including information security risk management: NIST, ISO 27001/27002, SSAE-16, HIPAA, HITECH, FERPA, GLB, PCI and SOX\n\n","title":"Vice President Solutions &amp; Services","rangeDate":"2005-11至2009-11"&#125;]', skills='["Virtualization","Cloud Computing","Storage","Data Center","Go-to-market Strategy","HP","Cloud Computing","Solution Architecture","Professional Services","Servers","Solution Selling","IT Strategy","Enterprise Software","Data Center","VMware","Security","Partner Management","Virtualization","Storage","Disaster Recovery","Storage Area Networks","IT Service Management","Networking","Pre-sales","Channel Partners","SAN","Managed Services","Storage Virtualization","SaaS"]', uniqueUrl='christopherswadish', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='May', lastName='Zhang', industryName='Luxury Goods &amp; Jewelry', headline='FP&amp;A Manager', address='China', educations='[&#123;"schoolName":"上海对外经贸大学"&#125;,&#123;"schoolName":"Shanghai University of International Business and Economics"&#125;]', experiences='[&#123;"companyName":"Pandora","title":"FP&amp;A Mamager","rangeDate":"2015-9"&#125;,&#123;"locationName":"中国 上海市区","companyName":"Trussardi Asia Pacific","title":"Financial Controller","rangeDate":"2012-9至2015-9"&#125;,&#123;"companyName":"Christian Dior Commercial (Shanghai) Co., Ltd","title":"Senior Finance Analyst (Assistant Manager)","rangeDate":"2008至2011-2"&#125;,&#123;"companyName":"Eaton (China) Investment Co., Ltd","title":"Accounting Supervisor &amp; Asia Pacific Finance Analyst","rangeDate":"2004至2008"&#125;,&#123;"companyName":"Richemont","title":"FP&amp;A Manager","rangeDate":"2011-2至2012-8"&#125;]', skills='["Accounting","Financial Analysis","Financial Reporting","Forecasting","Accounting","Financial Analysis","Financial Reporting","Sarbanes-Oxley Act","SAP","Forecasting","Business Planning"]', uniqueUrl='may-zhang-74248220', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Jennifer', lastName='Ji', industryName='Machinery', headline='CPA, CMA, CIA, CISA', address='Toronto, Canada Area', educations='[&#123;"schoolName":"上海财经大学"&#125;,&#123;"schoolName":"Shandong Economic University"&#125;,&#123;"schoolName":"Shanghai University of Finance and Economics"&#125;]', experiences='[&#123;"companyName":"Diageo","description":"Worked as a strategic business partner to the business operation in terms of Risks and Controls.\nWork scope: Risk based Audit, Compliance review, system implementation review, Fraud investigation","title":"Global Audit &amp; Risk Manager","rangeDate":"2008-6至2010-10"&#125;,&#123;"companyName":"Eaton Corporation","description":"Led internal audit projects to make sure robust internal controls in place supporting the business growth.\nWork scope: Risk based Audit, SOX validation, Fraud investigation","title":"Lead Internal Auditor","rangeDate":"2005-6至2008-5"&#125;,&#123;"companyName":"KPMG Audit","description":"Led audit team to carry out local statutory reporting audit and group reporting package review based on US GAAP or IFRS.\nMajor Audit clients:\tSiemens, Continental, GE, Fairchild, Total, Merck, Swatch, PICC","title":"Assistant Manager","rangeDate":"2001-8至2005-2"&#125;,&#123;"companyName":"Caterpillar","description":"Provided financial leadership to the major investment projects and supported critical decision making. \nMajor responsibilities: Cash flow analysis for investment proposal; Budget development and monitoring; Variance analysis; Forecasting; Project post implementation review.\nSupported two major projects for their successful implementation; provided recommendations on the implementation plans for a new investment intensive project as a trusted advisor.","title":"FP&amp;A - Decision Support","rangeDate":"2011-1"&#125;]', skills='["Audit","Internal Audit","SOX","Internal Controls","Audit","Forecasting","Corporate Fraud Investigations","Auditing","Cross Cultural Management","Financial Reporting","External Audit","Sarbanes-Oxley Act","Analysis","Financial Audits","SOX 404","Accounting","Business Process","Cash Flow","Cost Accounting","Managerial Finance","Compliance","Financial Accounting","Finance","Process Improvement","US GAAP","Risk Management","Budgets","IFRS","Tax","Financial Analysis","Internal Audit","SOX","Internal Controls"]', uniqueUrl='jennifer-ji-3501aa7', insertTime='null'&#125;’数据</span><br><span class="line">抓取用户‘LinkedInModel&#123;id=0, firstName='Yalu', lastName='Xu', industryName='Writing &amp; Editing', headline='LinkedIn Columnist', address='Shanghai City, China', educations='[&#123;"schoolName":"University of International Business and Economics"&#125;]', experiences='[&#123;"locationName":"Joinville, Brazil","companyName":"Whirlpool","title":"Global Business Analyst","rangeDate":"2011-9至2012-8"&#125;,&#123;"locationName":"Beijing City, China","companyName":"AIESEC","title":"VP Exchange Delivery, China","region":"urn:li:fs_region:(cn,8911)","rangeDate":"2008-3至2011-6"&#125;,&#123;"courses":["urn:li:fs_course:(ACoAAAVXFcAB2mEHAcjaq6i1566uAcoE4qH-US4,1)","urn:li:fs_course:(ACoAAAVXFcAB2mEHAcjaq6i1566uAcoE4qH-US4,2)","urn:li:fs_course:(ACoAAAVXFcAB2mEHAcjaq6i1566uAcoE4qH-US4,3)"],"locationName":"Shanghai City, China","companyName":"EF Corporate Solutions","title":"Project Manager","region":"urn:li:fs_region:(cn,8909)","rangeDate":"2015-6至2016-11"&#125;,&#123;"locationName":"Shanghai City, China","companyName":"Michael Page","title":"Consultant","region":"urn:li:fs_region:(cn,8909)","honors":["urn:li:fs_honor:(ACoAAAVXFcAB2mEHAcjaq6i1566uAcoE4qH-US4,357826655)","urn:li:fs_honor:(ACoAAAVXFcAB2mEHAcjaq6i1566uAcoE4qH-US4,357848271)"],"rangeDate":"2012-10至2015-5"&#125;,&#123;"locationName":"Shanghai City, China","companyName":"EF Corporate Solutions","title":"Business Development Manager","region":"urn:li:fs_region:(cn,8909)","rangeDate":"2016-11至2017-3"&#125;]', skills='["Sales Management","Business Development","Recruiting","Sales","分析","Event Management","语言","Languages","Interviewing","跨文化沟通","Management","销售管理","业务开发","Analysis","领导力","销售","推销","Business Analysis","Sales Management","Interviews","Human Resources","Leadership","Business Development","Communication","Recruiting","Process Improvement","Sales","Negotiation","Team Leadership","Strategy","Talent Management","面试","招聘","项目管理","Project Management"]', uniqueUrl='yaluxu', insertTime='null'&#125;’数据</span><br><span class="line"></span><br><span class="line">`</span><br></pre></td></tr></table></figure>

<h3 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h3><p>采集慢的原因，一个是服务器在国外，还有一个是做了些页面破解的处理，最后一个就是我采用的是单线程。。。</p>
<p>程序放在了github上<br><a href="https://github.com/VBMHJQS/springbootquick/tree/linkedinCrawler" target="_blank" rel="noopener">查看</a></p>

      
    </div>

    

    
    
    

    <div>
          
            
          
    </div>

    

    
      <div>
        <div style="padding: 10px 0; margin: 20px auto; width: 90%; text-align: center;">
  <div></div>
  <button id="rewardButton" disable="enable" onclick="var qr = document.getElementById('QR'); if (qr.style.display === 'none') {qr.style.display='block';} else {qr.style.display='none'}">
    <span>打赏</span>
  </button>
  <div id="QR" style="display: none;">

    
      <div id="wechat" style="display: inline-block">
        <img id="wechat_qr" src="https://i.loli.net/2017/12/29/5a4632028eaeb.jpg" alt="wangxc 微信支付">
        <p>微信支付</p>
      </div>
    

    
      <div id="alipay" style="display: inline-block">
        <img id="alipay_qr" src="https://i.loli.net/2017/12/29/5a46320234b1d.jpg" alt="wangxc 支付宝">
        <p>支付宝</p>
      </div>
    

    

  </div>
</div>

      </div>
    

    
<div>
  
    <div>
    
        <div style="text-align:center;color: #ccc;font-size:14px;">
              -------------本文结束<i class="fa fa-paw"></i>感谢您的阅读-------------
        </div>
    
</div>

  
</div>
    <footer class="post-footer">
      
        <div class="post-tags">
          
            <a href="/tags/Linkedin/" rel="tag"><i class="fa fa-tag"></i> Linkedin</a>
          
            <a href="/tags/Crawl/" rel="tag"><i class="fa fa-tag"></i> Crawl</a>
          
        </div>
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/2017/04/24/Centos搭建xwiki+mysql+tomcat-/" rel="next" title="Centos搭建xwiki+mysql+tomcat">
                <i class="fa fa-chevron-left"></i> Centos搭建xwiki+mysql+tomcat
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/2017/05/03/如何优雅的“编写”api接口文档/" rel="prev" title="如何优雅的“编写”api接口文档">
                如何优雅的“编写”api接口文档 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
    </div>
  </div>


          </div>
          

  
    <div class="comments" id="comments">
    </div>
  



        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <img class="site-author-image" itemprop="image" src="/images/avatar.jpg" alt="wangxc">
            
              <p class="site-author-name" itemprop="name">wangxc</p>
              <p class="site-description motion-element" itemprop="description">革命尚未成功，同志还需努力~</p>
          </div>

          
            <nav class="site-state motion-element">
              
                <div class="site-state-item site-state-posts">
                
                  <a href="/archives/">
                
                    <span class="site-state-item-count">83</span>
                    <span class="site-state-item-name">日志</span>
                  </a>
                </div>
              

              
                
                
                <div class="site-state-item site-state-categories">
                  <a href="/categories/index.html">
                    
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                    <span class="site-state-item-count">6</span>
                    <span class="site-state-item-name">分类</span>
                  </a>
                </div>
              

              
                
                
                <div class="site-state-item site-state-tags">
                  <a href="/tags/index.html">
                    
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                    <span class="site-state-item-count">124</span>
                    <span class="site-state-item-name">标签</span>
                  </a>
                </div>
              
            </nav>
          

          

          
            <div class="links-of-author motion-element">
              
                <span class="links-of-author-item">
                  <a href="https://github.com/vector4wang" target="_blank" title="GitHub" rel="external nofollow"><i class="fa fa-fw fa-github"></i>GitHub</a>
                  
                </span>
              
                <span class="links-of-author-item">
                  <a href="mailto:vector4wang@qq.com" target="_blank" title="E-Mail" rel="external nofollow"><i class="fa fa-fw fa-envelope"></i>E-Mail</a>
                  
                </span>
              
                <span class="links-of-author-item">
                  <a href="https://www.jianshu.com/u/223a1314e818" target="_blank" title="简书" rel="external nofollow"><i class="fa fa-fw fa-book"></i>简书</a>
                  
                </span>
              
                <span class="links-of-author-item">
                  <a href="http://blog.csdn.net/qqhjqs?viewmode=contents" target="_blank" title="CSDN" rel="external nofollow"><i class="fa fa-fw fa-crosshairs"></i>CSDN</a>
                  
                </span>
              
                <span class="links-of-author-item">
                  <a href="https://twitter.com/BMHJQS" target="_blank" title="Twitter" rel="external nofollow"><i class="fa fa-fw fa-twitter"></i>Twitter</a>
                  
                </span>
              
                <span class="links-of-author-item">
                  <a href="https://www.facebook.com/" target="_blank" title="FB Page" rel="external nofollow"><i class="fa fa-fw fa-facebook-official"></i>FB Page</a>
                  
                </span>
              
            </div>
          

          
          

          
          

          
            
          
          

        </div>
      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#打包"><span class="nav-number">1.</span> <span class="nav-text">打包</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#运行"><span class="nav-number">2.</span> <span class="nav-text">运行</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#结果"><span class="nav-number">3.</span> <span class="nav-text">结果</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#后记"><span class="nav-number">4.</span> <span class="nav-text">后记</span></a></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      
        <div class="back-to-top">
          <i class="fa fa-arrow-up"></i>
          
            <span id="scrollpercent"><span>0</span>%</span>
          
        </div>
      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<div class="copyright">&copy; <span itemprop="copyrightYear">2020</span>
  <span class="with-love" id="animate">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">wangxc</span>

  

  
</div>


  


<div class="powered-by">
<i class="fa fa-user-md"></i><span id="busuanzi_container_site_pv">
  本站访客数:<span id="busuanzi_value_site_uv"></span>
</span>
</div>


  <div class="powered-by">由 <a class="theme-link" target="_blank" rel="external nofollow" href="https://hexo.io">Hexo</a> 强力驱动 v3.8.0</div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">主题 &mdash; <a class="theme-link" target="_blank" rel="external nofollow" href="https://theme-next.org">NexT.Mist</a> v6.3.0</div>




        








        
      </div>
    </footer>

    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>


























  
  
    <script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  


  


  <script type="text/javascript" src="/js/src/utils.js?v=6.3.0"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=6.3.0"></script>



  
  

  
  <script type="text/javascript" src="/js/src/scrollspy.js?v=6.3.0"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=6.3.0"></script>



  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=6.3.0"></script>



  



	





  





  








  <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
  
  
  <script src="//unpkg.com/valine/dist/Valine.min.js"></script>
  
  <script type="text/javascript">
    var GUEST = ['nick','mail','link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(function (item) {
      return GUEST.indexOf(item)>-1;
    });
    new Valine({
        el: '#comments' ,
        verify: false,
        notify: false,
        appId: 'YdGFHBfuDwObik8qwCeRAWgr-gzGzoHsz',
        appKey: 'oFpbJwmMQf98DfFDUlzE5Fai',
        placeholder: 'Just go go',
        avatar:'mm',
        guest_info:guest,
        pageSize:'10' || 10,
    });
  </script>



  





  

  

  

  

  
  

  

  

  

  

  

</body>
</html>
